package com.example.attendancesystem.Mapper;


import com.example.attendancesystem.Models.MorRow;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface MorRowMapper {

    /**
     * 查询所有下午打卡记录
     *
     * @return AftRow列表
     */
    @Select("select id,emp_number,emp_name,row_date,mor_on,on_state,mor_off,off_state from mor_row ")
    List<MorRow> getAllMorRow();

    /**
     * 按日期查询所有的上午打卡记录
     *
     * @param queryDate 日期
     * @return AftRow列表
     */
    @Select("select id,emp_number,emp_name,row_date,mor_on,on_state,mor_off,off_state from mor_row where row_date = #{queryDate}")
    List<MorRow> getMorRowByDate(@Param("queryDate") String queryDate);

    /**
     * 按员工号和日期查询上午打卡记录
     *
     * @param empNumber 员工号
     * @param queryDate 查询的日期
     * @return MorRow对象
     */
    @Select("select id,emp_number,emp_name,row_date,mor_on,on_state,mor_off,off_state " +
            "from mor_row where emp_number = #{empNumber} AND row_date = #{queryDate}")
    MorRow getMorRowByEmpNumAndDate(@Param("empNumber") String empNumber, @Param("queryDate") String queryDate);

    /**
     * 插入一条 上午上班打卡记录
     *
     * @param empNumber 工号
     * @param empName   姓名
     * @param rowDate   当前日期
     * @param nowTime   当前时间
     * @param onState   状态
     * @return 受影响的记录条数
     */
    @Insert("insert into mor_row (emp_number,emp_name,row_date,mor_on,on_state) " +
            "values(#{empNumber},#{empName},#{rowDate},#{nowTime},#{onState})")
    int insertMorOnRow(
            @Param("empNumber") String empNumber,
            @Param("empName") String empName,
            @Param("rowDate") String rowDate,
            @Param("nowTime") String nowTime,
            @Param("onState") Integer onState);

    /**
     * 更新上午上班班打卡记录
     *
     * @param empNumber 员工号
     * @param rowDate   日期
     * @param nowTime   时间
     * @param onState   状态
     * @return 受影响的记录条数
     */
    @Update("update mor_row set mor_on = #{rowTime},on_state = #{onState} " +
            "where emp_number = #{empNumber} and row_date = #{rowDate}")
    int updateMorOnRow(
            @Param("empNumber") String empNumber,
            @Param("rowDate") String rowDate,
            @Param("rowTime") String nowTime,
            @Param("onState") Integer onState);

    /**
     * 插入一条 上午下班打卡记录
     *
     * @param empNumber 工号
     * @param empName   姓名
     * @param rowDate   时间
     * @param nowTime   状态
     * @param offState  受影响的记录条数
     * @return 受影响的记录条数
     */
    @Insert("insert into mor_row (emp_number,emp_name,row_date,mor_off,off_state) " +
            "values(#{empNumber},#{empName},#{rowDate},#{nowTime},#{offState})")
    int insertMorOffRow(
            @Param("empNumber") String empNumber,
            @Param("empName") String empName,
            @Param("rowDate") String rowDate,
            @Param("nowTime") String nowTime,
            @Param("offState") Integer offState);

    /**
     * 更新上午下班班打卡记录
     *
     * @param empNumber 员工号
     * @param rowDate   日期
     * @param nowTime   时间
     * @param offState  状态
     * @return 受影响的记录条数
     */
    @Update("update mor_row set mor_off = #{rowTime},off_state = #{offState} " +
            "where emp_number = #{empNumber} and row_date = #{rowDate}")
    int updateMorOffRow(
            @Param("empNumber") String empNumber,
            @Param("rowDate") String rowDate,
            @Param("rowTime") String nowTime,
            @Param("offState") Integer offState);




    @Select("select id,emp_number,emp_name,row_date,mor_on,on_state,mor_off,off_state " +
            "from mor_row where emp_number = #{empNumber} AND row_date like #{queryDate}")
    List<MorRow> getEmpMorRowByDate(@Param("empNumber") String empNumber, @Param("queryDate") String queryDate);
}
